export const kvaMessage = {
    /** 消息提示 */
    message(message, type) {
        // 保持默认只有一个消息弹窗
        ElMessage.closeAll()
        return ElMessage({
            message, // 消息文字
            type, // 类型
            duration: 3000, // 关闭时间默认为3秒，设为0则不会自动关闭
            center: true, // 文字居中
            showClose: true, // 是否显示关闭按钮
            dangerouslyUseHTMLString: true, // 是否将 message 属性作为 HTML 片段处理

        })
    },
    success(message) {
        this.message(message, 'success')
    },
    warning(message) {
        this.message(message, 'warning')
    },
    error(message) {
        this.message(message, 'error')
    },
    info(message){
        return this.message(message,"info")
    },

    /** 消息弹出框 */
    confirm(title, content, options) {
        // 默认值
        const deafultOptions = {icon: 'warning', confirmButtonText: '确定', cancelButtonText: '取消'}
        // 如果传递了就覆盖默认值
        const opts = {...deafultOptions, ...options}
        // 提示
        return ElMessageBox.confirm(
            content,
            title,
            {
                confirmButtonText: opts.confirmButtonText, // 确定按钮文本
                cancelButtonText: opts.cancelButtonText, // 取消按钮文本
                dangerouslyUseHTMLString: true, // 内容支持HTML
                draggable: true,    // 支持拖拽
                type: opts.icon,    // 修改图标
            }
        )
    },

    /** 消息通知 */
    notify(title,message,duration=3000,options){
        // 默认值
        const defaultOptions = {type:"info",position:"tr"}
        // 用户传递和默认值就行覆盖处理
        const opts = {...defaultOptions,...options}
        //永远保持只有一个打开状态
        ElNotification.closeAll()
        const positionMap = {
            "tr":"top-right",
            "tl":"top-left",
            "br":"bottom-right",
            "bl":"bottom-left"
        }
        return ElNotification({
            title,
            message,
            duration: duration,
            type:opts.type,
            position: positionMap[opts.position||"tr"],
            dangerouslyUseHTMLString:true
        })
    },
    notifySuccess(message){
        return this.notify("提示",message,3000,{type:"success",position:"tr"})
    },
    notifyError(message){
        return this.notify("提示",message,3000,{type:"error",position:"tr"})
    },
    notifyWarning(message){
        return this.notify(message,3000,{type:"warning",position:"tr"})
    },
    notifyInfo(message){
        return this.notify(message,3000,{type:"info",position:"tr"})
    }

}

// 统一导出对象
export default {...kvaMessage}
